package com.jrauto.CarAppBackend.config;

import com.qcloud.cos.COSClient;

import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.http.HttpProtocol;
import com.qcloud.cos.region.Region;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author : huiMing
 * Date : 2025年07月02日 11:45
 * @version V1.0
 */
@Configuration
public class CosConfig {

    @Value("${tencent.cos.secretId}")
    private String secretId; // 从 application.yml 读取密钥ID

    @Value("${tencent.cos.secretKey}")
    private String secretKey; // 从 application.yml 读取密钥Key

    @Value("${tencent.cos.region}")
    private String regionName; // 从 application.yml 读取存储桶所在区域，例如 ap-guangzhou

    /**
     * 初始化 COS 客户端
     * @return COSClient 实例
     */
    @Bean
    public COSClient cosClient() {
        // 1. 初始化用户身份信息（secretId, secretKey）
        // 生产环境中强烈建议使用子账号密钥，并遵循最小权限原则，以降低风险。
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);

        // 2. 设置 bucket 的地域
        // 更多 COS 地域的简称请参见：https://cloud.tencent.com/document/product/436/6224
        ClientConfig clientConfig = new ClientConfig(new Region(regionName));

        // 3. 建议设置使用 HTTPS 协议，从 5.6.54 版本开始，默认已使用 HTTPS
        clientConfig.setHttpProtocol(HttpProtocol.https);

        // 4. 生成 COS 客户端
        return new COSClient(cred, clientConfig);
    }
}